module StableKeyClick (
        input clk,
        input rst_n,
        // 已经稳定的按键输出
        input key_in,
        output reg beep
    );

    // 对key进行打1拍,获得按下的信号
    reg key0=1'b1;

    wire key_out;

    // 按键按下产生一个脉冲
    assign key_out = ~key_in&key0;

    // 进行打1拍
    always @(posedge clk or negedge rst_n) begin
        if (!rst_n) begin
            key0 <= 1'b1;
        end
        else begin
            key0 <= key_in;
        end
    end

    // 进行输出
    always @(negedge rst_n or posedge clk) begin
        if(!rst_n)
            beep<=1'b0;
        else if(key_out)
            beep<=~beep;
        else
            beep<=beep;
    end

endmodule
